<?php

namespace app\adminapi\controller;

use think\Controller;
use think\Request;

class Admin extends BaseApi
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index(Request $request)
    {
        $params = input();
        // dump($params);
        $where = [];
        if (isset($params["keyword"]) && !empty($params["keyword"])) {
            $where["username"] = ["like", "%{$params['keyword']}%"];
        }
        $data = \app\common\model\Admin::where($where)->with("role")->order("id desc")->paginate($params["pageSize"]);
        // dump($data);
        $this->ok($data);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        # 接收数据
        $params = input();
        # 数据检测
        $validata = $this->validate($params, [
            "username|用户名" => "require",
            "email|邮箱" => "require|email",
            "role_id|角色ID" => "require",
            "password|密码" => "length:6,20",
        ]);
        if ($validata !== true) {
            $this->fail($validata);
        }
        # 数据处理
        # 判断他是有传入密码，如果没有传入密码那就让默认为 123456
        if (empty($params["password"]) || !isset($params["password"])) {
            $params["password"] = "123456";
        }
        $params["password"] = jiami_password($params["password"]);
        # 添加数据
        $data = \app\common\model\Admin::create($params, true);
        $find = \app\common\model\Admin::find($data["id"]);
        # 返回数据
        $this->ok($find, 200, "管理员添加成功");
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        $find = \app\common\model\Admin::find($id);
        $this->ok($find);
    }
    /*
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        # 判断他是否修改超级管理员
        if ($id == 1) {
            $this->fail("无权修改此管理员");
        }
        # 接收数据
        $params = input();
        # 判断他是否修改的自己
        if ($id == input("user_id") || input("user_id") == 1) {
            # 判断他是否传入type 同时等于 reset_pwd ，那就重置密码
            if (!empty($params["type"]) && $params["type"] == "reset_pwd") {
                $params = ["password" => jiami_password("123456")];
                # 重置密码
                // $data = \app\common\model\Admin::update($params, ["id" => $id], true);
                // $find = \app\common\model\Admin::find($data["id"]);
                # 返回数据
                $this->ok([], 200, "密码重置成功");
            } else {
                # 数据检测
                $validata = $this->validate($params, [
                    "nikcname|真实名称" => "max:100",
                    "email|邮箱" => "require|email",
                    "role_id|角色ID" => "integer|gt:0",
                ]);
                if ($validata !== true) {
                    $this->fail($validata);
                }
                # 数据处理
                # 删除用户名和密码
                if (isset($params["password"])) unset($params["password"]);
                if (isset($params["username"])) unset($params["username"]);
                # 修改数据
                $data = \app\common\model\Admin::update($params, ["id" => $id], true);
                $find = \app\common\model\Admin::find($data["id"]);
                # 返回数据
                $this->ok($find, 200, "管理员修改成功");
            }
        } else {
            $this->fail("没有权限修改");
        }
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $admin = \app\common\model\Admin::where("id",$id)->find();
        if($admin["id"] == 1 ){
            $this->fail("无权限删除");
        }
        if($id == input("user_id")){
            $this->fail("不能删除自己");
        }
        if($admin["role_id"] ==1 ){
            $this->fail("无权限删除超级管理员");
        }
        \app\common\model\Admin::destroy($id);
        $this->ok([],200,"删除成功");
    }
}
